//
//  HomeTableViewController.swift
//  Swiftsweibo
//
//  Created by 张鹏飞 on 16/1/1.
//  Copyright © 2016年 张鹏飞. All rights reserved.
//

import UIKit
import SVProgressHUD

/// 原创微博 Cell 的可重用表示符号
let StatusCellNormalId = "StatusCellNormalId"
/// 原创微博 Cell 的可重用表示符号
let StatusCellRetweetedId = "StatusCellRetweetedId"

class HomeTableViewController: VistorViewController {
    
    

 /// 微博数据列表模型
    private lazy var listViewModel = StatusListViewModel()
    
/// 微博数据数组
    var dataList: [Status]?
    override func viewDidLoad() {
        super.viewDidLoad()

        if !UserAccountViewModel.sharedUserAccount.userLogon {
        
            visitorView?.setUpInfo(nil, title: "关注一些人，回这里看看有什么惊喜")
        }
        
        prepareTableView()
        
        loadData()
    }
    
/// 准备表格
    private func prepareTableView() {
    
        //注册可重用 cell
        tableView.registerClass(StatusRetweetedCell.self, forCellReuseIdentifier: StatusCellRetweetedId)
        
        //取消分割线
        tableView.separatorStyle = .None
        
        //自动计算行高 - 需要一个自上而下的自动布局控件,指定一个自上而下的约束
    //预估行高
        tableView.estimatedRowHeight = 400
        //自动计算行高
//        tableView.rowHeight = UITableViewAutomaticDimension
    }
    
/// 加载数据
    private func loadData() {
    
        listViewModel.loadStatus { (isSuccessed) -> () in
            if !isSuccessed {
            
                SVProgressHUD.showInfoWithStatus("加载数据失败,请稍后再试")
                return
            }
            
            self.tableView.reloadData()
        }
   }
}


// MARK: - 数据源方法
extension HomeTableViewController {

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return listViewModel.statusList.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCellWithIdentifier(StatusCellRetweetedId, forIndexPath: indexPath) as! StatusCell
        
        cell.viewModel = listViewModel.statusList[indexPath.row]
        
        return cell
    
    }
    
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        
        //1.视图模型

        return listViewModel.statusList[indexPath.row].rowHeight
    }
}


